package com.fowo.api.model.wms.order.item;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 销售出库单子表(wms) 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class WmsOrderItemImportPo {

  /** 父级 */
  @ExcelProperty("父级")
  @Size(max = 50, message = "父级长度不能超过50")
  private String parentIdOrderNumber;

  @ExcelIgnore
  @Schema(title = "父级")
  private String parentId;

  /** 出库单明细id */
  @ExcelProperty("出库单明细id")
  @Size(max = 50, message = "出库单明细id长度不能超过50")
  private String wodId;

  /** 商品 */
  @ExcelProperty("商品")
  @Size(max = 500, message = "商品长度不能超过500")
  private String productIdName;

  @ExcelIgnore
  @Schema(title = "商品")
  private String productId;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 商品单价 */
  @ExcelProperty("商品单价")
  @DecimalString(message = "商品单价小数格式不正确", label = "商品单价")
  private String unitPrice;

  /** 数量 */
  @ExcelProperty("数量")
  @IntegerString(message = "数量数值格式不正确", label = "数量", min = 0)
  private String count;

  /** 商品备注 */
  @ExcelProperty("商品备注")
  @Size(max = 50, message = "商品备注长度不能超过50")
  private String customization;

  /** 库存成本 (总计) */
  @ExcelProperty("库存成本 (总计)")
  @DecimalString(
    message = "库存成本 (总计)小数格式不正确",
    label = "库存成本 (总计)"
  )
  private String stockCost;

  /** 捆绑类型 */
  @ExcelProperty("捆绑类型")
  @EnumsString(
    value = { "普通商品", "捆绑产品", "捆绑产品拆分子产品" },
    message = "捆绑类型只能是“普通商品”, “捆绑产品”, “捆绑产品拆分子产品”中的一个"
  )
  private String bundleType;

  /** 捆绑产品wod_id【只有拆分子产品才有】 */
  @ExcelProperty("捆绑产品wod_id【只有拆分子产品才有】")
  @Size(
    max = 50,
    message = "捆绑产品wod_id【只有拆分子产品才有】长度不能超过50"
  )
  private String bundleWodId;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String sellerSku;

  /** 中文申报名 */
  @ExcelProperty("中文申报名")
  @Size(max = 50, message = "中文申报名长度不能超过50")
  private String cnName;

  /** 英文申报名 */
  @ExcelProperty("英文申报名")
  @Size(max = 50, message = "英文申报名长度不能超过50")
  private String enName;

  /** 三方仓品名 */
  @ExcelProperty("三方仓品名")
  @Size(max = 50, message = "三方仓品名长度不能超过50")
  private String thirdProductName;

  /** 三方仓SKU */
  @ExcelProperty("三方仓SKU")
  @Size(max = 50, message = "三方仓SKU长度不能超过50")
  private String thirdProductCode;

  /** 币种 */
  @ExcelProperty("币种")
  @Size(max = 50, message = "币种长度不能超过50")
  private String currencyCode;

  /** 分摊运费 (总计) */
  @ExcelProperty("分摊运费 (总计)")
  @DecimalString(
    message = "分摊运费 (总计)小数格式不正确",
    label = "分摊运费 (总计)"
  )
  private String apportionFreight;

  /** 分摊运费 (单个) */
  @ExcelProperty("分摊运费 (单个)")
  @DecimalString(
    message = "分摊运费 (单个)小数格式不正确",
    label = "分摊运费 (单个)"
  )
  private String apportionFreightSingle;

  /** 物流运费币种 */
  @ExcelProperty("物流运费币种")
  @Size(max = 50, message = "物流运费币种长度不能超过50")
  private String logisticsFreightCurrencyCode;

  /** 领星销售出库单ID */
  @ExcelProperty("领星销售出库单ID")
  @IntegerString(
    message = "领星销售出库单ID数值格式不正确",
    label = "领星销售出库单ID",
    min = 0
  )
  private String woId;

  /** 仓位 */
  @ExcelProperty("仓位")
  @Size(max = 50, message = "仓位长度不能超过50")
  private String whbIdStorageBin;

  @ExcelIgnore
  @Schema(title = "仓位")
  private String whbId;

  /** 订单结算时间 */
  @ExcelProperty("订单结算时间")
  @DateString(message = "订单结算时间不是有效的日期格式")
  private String orderSettlementTime;

  /** 配货情况 */
  @ExcelProperty("配货情况")
  private String distributionSituation;

  /** 参考号 */
  @ExcelProperty("参考号")
  @Size(max = 50, message = "参考号长度不能超过50")
  private String referenceId;
}
